package com.zzyl.nursing.service;

import com.zzyl.nursing.domain.AlertData;
import com.zzyl.nursing.domain.DeviceData;
import com.zzyl.nursing.websocket.AlertMessage;

import java.util.List;

/**
 * WebSocket报警推送服务接口
 * 
 * @author zzyl
 * @date 2025-07-25
 */
public interface AlertWebSocketService {

    /**
     * 推送报警消息给指定用户
     * 
     * @param userId 用户ID
     * @param alertData 报警数据
     */
    void sendAlertToUser(String userId, AlertData alertData);

    /**
     * 推送报警消息给多个用户
     * 
     * @param userIds 用户ID列表
     * @param alertData 报警数据
     */
    void sendAlertToUsers(List<String> userIds, AlertData alertData);

    /**
     * 广播报警消息给所有在线用户
     * 
     * @param alertData 报警数据
     */
    void broadcastAlert(AlertData alertData);

    /**
     * 推送设备数据异常报警
     * 
     * @param deviceData 设备数据
     * @param alertLevel 报警等级
     */
    void sendDeviceAlert(DeviceData deviceData, Integer alertLevel);

    /**
     * 推送解除报警消息
     * 
     * @param deviceDescription 设备描述
     * @param locationType 位置类型
     */
    void sendResolveAlert(String deviceDescription, Integer locationType);

    /**
     * 检查用户是否在线
     * 
     * @param userId 用户ID
     * @return 是否在线
     */
    boolean isUserOnline(String userId);

    /**
     * 获取当前在线用户数量
     * 
     * @return 在线用户数量
     */
    int getOnlineUserCount();
} 